package zgrjb.snbq.teach_platform.dto.model;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import java.time.LocalDateTime;

/**
 * 班级表 DO
 * 对应数据库表：class
 * 
 * CREATE TABLE `class` (
 *     `id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '班级ID',
 *     `name` VARCHAR(64) NOT NULL COMMENT '班级名称',
 *     `code` VARCHAR(32) DEFAULT NULL COMMENT '班级代码',
 *     `subject` VARCHAR(64) DEFAULT NULL COMMENT '学科/专业',
 *     `grade` VARCHAR(32) DEFAULT NULL COMMENT '年级',
 *     `major` VARCHAR(128) DEFAULT NULL COMMENT '专业',
 *     `department` VARCHAR(128) DEFAULT NULL COMMENT '所属学院',
 *     `teacher_id` BIGINT UNSIGNED NOT NULL COMMENT '班主任/授课教师ID',
 *     `teacher_name` VARCHAR(64) DEFAULT NULL COMMENT '教师姓名',
 *     `teacher_phone` VARCHAR(16) DEFAULT NULL COMMENT '教师手机号',
 *     `max_students` INT DEFAULT 50 COMMENT '最大学生数',
 *     `current_students` INT DEFAULT 0 COMMENT '当前学生数',
 *     `description` VARCHAR(256) DEFAULT NULL COMMENT '班级描述',
 *     `status` TINYINT DEFAULT 1 COMMENT '状态：1-正常，0-停用',
 *     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 *     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
 * );
 */

@AllArgsConstructor
@NoArgsConstructor
@Data
@Slf4j
@TableName("class")
public class ClassDO {

    /**
     * 班级ID
     */
    private Long id;

    /**
     * 班级名称
     */
    private String name;

    /**
     * 班级代码
     */
    private String code;

    /**
     * 学科/专业
     */
    private String subject;

    /**
     * 年级
     */
    private String grade;

    /**
     * 专业
     */
    private String major;

    /**
     * 所属学院
     */
    private String department;

    /**
     * 班主任/授课教师ID
     */
    @TableField("teacher_id")
    private Long teacherId;

    /**
     * 教师姓名
     */
    @TableField("teacher_name")
    private String teacherName;

    /**
     * 教师手机号
     */
    @TableField("teacher_phone")
    private String teacherPhone;

    /**
     * 最大学生数
     */
    @TableField("max_students")
    private Integer maxStudents;

    /**
     * 当前学生数
     */
    @TableField("current_students")
    private Integer currentStudents;

    /**
     * 班级描述
     */
    private String description;

    /**
     * 状态：1-正常，0-停用
     */
    private Integer status;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}
